import request from "@/utils/request";

const CATEGORY_BASE_URL = "/goods/category";
import { Attachment } from "@/api/common/common";

const CategoryAPI = {
  /**
   * 获取部门列表
   *
   * @param queryParams 查询参数（可选）
   * @returns 部门树形表格数据
   */
  getList(queryParams?: CategoryQuery) {
    return request<any, CategoryVO[]>({
      url: `${CATEGORY_BASE_URL}/loadTree`,
      method: "get",
      params: queryParams,
    });
  },

  /** 获取部门下拉列表 */
  getOptions() {
    return request<any, OptionType[]>({
      url: `${CATEGORY_BASE_URL}/loadTree`,
      method: "get",
    });
  },

  /**
   * 获取部门表单数据
   *
   * @param id 部门ID
   * @returns 部门表单数据
   */
  getFormData(id: string) {
    return request<any, CategoryView>({
      url: `${CATEGORY_BASE_URL}/load/${id}`,
      method: "get",
    });
  },

  /**
   * 新增部门
   *
   * @param data 部门表单数据
   * @returns 请求结果
   */
  create(data: CategoryForm) {
    return request({
      url: `${CATEGORY_BASE_URL}/add`,
      method: "post",
      data,
    });
  },

  /**
   * 修改部门
   *
   * @param id 部门ID
   * @param data 部门表单数据
   * @returns 请求结果
   */
  update(id: string, data: CategoryForm) {
    return request({
      url: `${CATEGORY_BASE_URL}/update`,
      method: "post",
      data,
    });
  },

  /**
   * 删除部门
   *
   * @param ids 部门ID，多个以英文逗号(,)分隔
   * @returns 请求结果
   */
  deleteByIds(ids: string) {
    return request({
      url: `${CATEGORY_BASE_URL}/batchDelete?ids=${ids}`,
      method: "get",
    });
  },
};

export default CategoryAPI;

/** 部门查询参数 */
export interface CategoryQuery {
  /** 搜索关键字 */
  keywords?: string;
  /** 状态 */
  status?: boolean;
}

/** 部门类型 */
export interface CategoryVO {
  /** 子部门 */
  children?: CategoryVO[];
  /** 部门ID */
  id?: string;
  /** 部门名称 */
  name?: string;
  /** 部门编号 */
  code?: string;
  /** 父部门ID */
  parentId?: string;
  /** 排序 */
  sort?: number;
  /** 状态(1:启用；0:禁用) */
  status?: boolean;
  attachments?: Attachment[];
  imageId?: string;
  iconImg?: string;
}

/** 部门表单类型 */
export interface CategoryForm {
  /** 部门ID(新增不填) */
  id?: string;
  /** 部门名称 */
  name?: string;
  /** 部门编号 */
  code?: string;
  /** 父部门ID */
  parentId: string;
  /** 排序 */
  sort?: number;
  /** 状态(1:启用；0：禁用) */
  status?: boolean;
  attachmentIds?: string[];
  imageId?: string;
}

export interface CategoryView {
  /** 部门ID(新增不填) */
  id?: string;
  /** 部门名称 */
  name?: string;
  /** 部门编号 */
  code?: string;
  /** 父部门ID */
  parentId: string;
  /** 排序 */
  sort?: number;
  /** 状态(1:启用；0：禁用) */
  status?: boolean;
  attachments?: Attachment[];
}
